package com.lagou.request;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class AServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("AServlet中功能上执行了");

        // 请求转发到BServlet String path: 写的是要跳转的资源路径
      /*  // 1.获取到转发器对象，请求转发无法转发到外部资源
        RequestDispatcher requestDispatcher = req.getRequestDispatcher("http://www.baidu.com");
        RequestDispatcher requestDispatcher = req.getRequestDispatcher("/bServlet");


        // 2.借助转发器对象进行真正的请求转发
        requestDispatcher.forward(req, resp);*/

        // 向request域中设置数据
        req.setAttribute("hanbao", "香辣鸡腿堡");

        // 链式编程
        req.getRequestDispatcher("/bServlet").forward(req, resp);
    }

    /* 转发器API
        1、通过requests对象，获得转发器对象
            RequestDispatcher getRequestDispatcher(String path) //要跳转到的资源路径
        2、通过转发器对象，实现转发功能
            void forward(ServletRequest request, ServletResponse response)

      请求转发特点：
        浏览器：发了一次请求
        地址栏：没有发生改变
        只能转发到服务器内部资源
    */

    /*
        域对象API：
        1、设置数据：
            void setAttribute(String name, Object o)
        2、获取数据
            Object getAttribute(String name)
        3、删除数据
            void removeAttribute(String name)
        生命周期
        1、何时创建
            用户发送请求时，创建request
        2、何时销毁
            服务器返回响应时，销毁request
        3、作用范围
            一次请求，包含多次转发

    */
}
